home *** CD-ROM | disk | FTP | other *** search
- /* AOMCreatePanels.c */
- /*
- * AddressOMatic Sample
- * AOMCreatePanels.c
- * Copyright © 1993 Apple Computer Inc. All rights reserved.
- */
- #include "AddressOMaticPrivate.h"
-
- /*
- * This is a jacket function for SDPNewPanel.
- */
- OSErr
- _AOMFindCreate(
- register AddressOMaticPtr aomPtr,
- const RStringPtr *typesList, /* Types to select */
- unsigned long typeCount, /* Number of types */
- short simultaneousSearchCount,
- SDPFindPanelFocus initialFocus,
- DirMatchWith matchTypeHow, /* Enumeration mode */
- short helpResourceID /* Help strings */
- )
- {
- OSErr status;
- Point panelLoc;
-
- /*
- * Life is too short to figure out MPW
- */
- SetPt(&panelLoc, PANEL.left, PANEL.top); /* topLeft(PANEL) */
- status = SDPNewFindPanel(
- &AOM.findPanel, /* Result */
- AOM.window, /* In this window */
- panelLoc, /* At this location */
- kStandardFindLayout, /* Normal layout */
- FALSE, FALSE, /* Initially invisible */
- typesList, /* Types to browse */
- typeCount, /* Number of types */
- matchTypeHow, /* Understand typeList */
- AOM.identity, /* User identity */
- simultaneousSearchCount, /* Configure search */
- initialFocus, /* Focus around what? */
- (long) aomPtr /* RefCon -> AOM */
- );
- LOG(status, "\pSDPNewFindPanel");
- if (status == noErr && helpResourceID != 0) {
- status = SDPSetFindPanelBalloonHelp(
- AOM.findPanel,
- helpResourceID
- );
- LOG(status, "\pSDPSetFindPanelBalloonHelp");
- }
- if (status == noErr) {
- status = SDPInstallFindPanelBusyProc(
- AOM.findPanel,
- _AOMAnimateFindPanel
- );
- }
- return (status);
- }
-
- OSErr
- _AOMFindDispose(
- register AddressOMaticPtr aomPtr
- )
- {
- OSErr status;
-
- if (AOM.findPanel == NULL)
- status = noErr;
- else {
- status = SDPDisposeFindPanel(AOM.findPanel);
- LOG(status, "\pSDPDisposeFindPanel");
- AOM.findPanel = NULL;
- }
- return (status);
- }
-
- OSErr
- _AOMFindShow(
- register AddressOMaticPtr aomPtr,
- Boolean isShow
- )
- {
- OSErr status;
-
- if (AOM.findPanel == NULL)
- status = noErr;
- else {
- status = (isShow)
- ? SDPShowFindPanel(AOM.findPanel)
- : SDPHideFindPanel(AOM.findPanel);
- LOG(status, "\pSDPShow/HideFindPanel");
- }
- return (status);
- }
-
- OSErr
- _AOMFindEnable(
- register AddressOMaticPtr aomPtr,
- Boolean isEnable
- )
- {
- OSErr status;
-
- if (AOM.findPanel == NULL)
- status = noErr;
- else {
- status = SDPEnableFindPanel(AOM.findPanel, isEnable);
- LOG(status, "\pSDPEnableFindPanel");
- }
- return (status);
- }
-
- OSErr
- _AOMFindSetFocus(
- register AddressOMaticPtr aomPtr,
- SDPFindPanelFocus newFocus
- )
- {
- OSErr status;
-
- if (AOM.findPanel == NULL)
- status = noErr;
- else {
- status = SDPSetFindPanelFocus(AOM.findPanel, newFocus);
- LOG(status, "\pSDPSetFindPanelFocus");
- }
- return (status);
- }
-
- OSErr
- _AOMFindUpdate(
- register AddressOMaticPtr aomPtr,
- RgnHandle drawRgn
- )
- {
- OSErr status;
-
- status = noErr;
- if (AOM.findPanel != NULL)
- status = SDPUpdateFindPanel(AOM.findPanel, drawRgn);
- LOG(status, "\pSDPUpdateFindPanel");
- return (status);
- }
-
- OSErr
- _AOMFindStartStop(
- register AddressOMaticPtr aomPtr,
- Boolean startFind
- )
- {
- OSErr status;
-
- if (FIND_SELECTED == FALSE
- || AOM.findPanel == NULL
- || startFind == FINDING)
- status = noErr;
- else if (startFind) {
- status = SDPStartFind(AOM.findPanel);
- }
- else {
- NOTE("\pStopping find");
- status = SDPStopFind(AOM.findPanel);
- NOTE("\pFind stopped");
- }
- LOG(status, "\pSDPStartStopFind");
- return (status);
- }
-
- /*
- * This handles all of the selection extraction in one big lump.
- * Returns kOCENoSuchRecord if there is no selection.
- *
- * Special error status:
- * kOCEOperationDenied Must stop finding before calling extractor
- * kOCENoSuchRecord Nothing is selected
- */
- OSErr
- _AOMFindExtractSelection(
- register AddressOMaticPtr aomPtr,
- unsigned short *selectionSize,
- PackedDSSpecPtr *dsSpec
- )
- {
- OSErr status;
- SDPFindPanelState findState;
-
- *selectionSize = 0;
- if (AOM.findPanel == NULL)
- status = paramErr; /* Can't happen */
- else if (FINDING) /* Stop finding first */
- status = kOCEOperationDenied;
- else {
- status = SDPGetFindPanelState(AOM.findPanel, &findState);
- }
- if (status == noErr && (findState & kSDPItemIsSelectedMask) == 0)
- status = kOCENoSuchRecord; /* Oops, nothing selected */
- if (status == noErr) /* Looking good, get size */
- status = SDPGetFindPanelSelectionSize(AOM.findPanel, selectionSize);
- if (status == noErr) { /* Allocate selection */
- *dsSpec = (PackedDSSpecPtr) NewPtr(*selectionSize);
- status = MemError();
- }
- if (status == noErr) { /* If ok, get the data */
- status = SDPGetFindPanelSelection(AOM.findPanel, *dsSpec);
- if (status != noErr) { /* Oops, dump the buffer */
- DisposePtr((Ptr) *dsSpec);
- *selectionSize = 0;
- *dsSpec = NULL;
- }
- }
- LOG(status, "\p_AOMFindExtractSelection");
- return (status);
- }
-
- void
- _AOMFindAdjust(
- register AddressOMaticPtr aomPtr
- )
- {
- (void) SDPMoveFindPanel(AOM.findPanel, PANEL.left, PANEL.top);
- }
-
- OSErr
- _AOMFindSetIdentity(
- register AddressOMaticPtr aomPtr,
- AuthIdentity userIdentity
- )
- {
- OSErr status;
-
- if (AOM.findPanel == NULL)
- status = noErr;
- else {
- status = SDPSetFindIdentity(AOM.findPanel, userIdentity);
- }
- return (status);
- }
-